package xyz.jcat.sco.admin.oauth2.server.auth;

import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.DefaultAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
import org.springframework.stereotype.Component;
import xyz.jcat.sco.common.AuthConst;

import java.util.HashMap;
import java.util.Map;

@Component
public class RedisAccessTokenConverterImpl extends DefaultAccessTokenConverter implements TokenEnhancer {

    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
        DefaultOAuth2AccessToken defaultOAuth2AccessToken = (DefaultOAuth2AccessToken) accessToken;
        UserAuthenticationToken authenticationToken = (UserAuthenticationToken) authentication.getUserAuthentication();
        Map<String, Object> map = new HashMap<>(1);
        map.put(AuthConst.USER_ID_KEY, authenticationToken.getLoginUser().getUserId().toString());
        defaultOAuth2AccessToken.setAdditionalInformation(map);
        return defaultOAuth2AccessToken;
    }

}
